home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / freeWAIS-sf-1.1 / ir / query_l.l < prev    next >
Encoding:
Lex Description  |  1994-10-09  |  1.9 KB  |  67 lines

  1. %{
  2. /*                               -*- Mode: C -*- 
  3.  * qyery_l.l -- 
  4.  * ITIID           : $ITI$ $Header $__Header$
  5.  * Author          : Ulrich Pfeifer
  6.  * Created On      : Tue Feb 15 16:03:22 1994
  7.  * Last Modified By: Ulrich Pfeifer
  8.  * Last Modified On: Mon Oct 10 12:45:32 1994
  9.  * Update Count    : 36
  10.  * Status          : Unknown, Use with caution!
  11.  */
  12.  
  13.  
  14. /* HISTORY 
  15.  * 23-Mar-1994        Ulrich Pfeifer    
  16.  *    Last Modified: Wed Mar 23 11:09:53 1994 #29 (Ulrich Pfeifer)
  17.  *    Added flex support
  18.  * 10-Mar-1994        Ulrich Pfeifer    
  19.  *    Support for literal searches
  20.  */
  21.  
  22. #include "query_token.h"
  23. #include "cutil.h"
  24.  
  25. #undef  ECHO
  26. #define ECHO 
  27. /*
  28. [Oo][Rr]
  29. [Nn][Oo][Tt] 
  30. */
  31. extern char* yybuf;
  32. #ifdef FLEX_SCANNER
  33. int yylineno = 0;
  34. #undef yywrap
  35. #define yywrap() (yyrestart(yyin),1)
  36.  
  37. #undef YY_INPUT
  38. #define YY_INPUT(buf,result,max_size) \
  39.                   { \
  40.                   int c = *(yybuf++); \
  41.                   if (c=='\n') yylineno++; \
  42.                   result = (c == '\0') ? YY_NULL : (buf[0] = c, 1); \
  43.                   }
  44. #else
  45. #undef input
  46. #define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):*(yybuf++))==10?(yylineno++,yytchar):yytchar)=='\0'?0:yytchar)
  47. #endif
  48. %}
  49. WORD  [^ \t\n=()<>]+
  50. %%
  51. "and"|"AND"|"And" { ECHO; return(AND); }
  52. "or"|"OR"|"Or"    { ECHO; return(OR); }
  53. "not"|"NOT"|"Not" { ECHO; return(NOT); }
  54. [()=<>]           { ECHO; return(yytext[0]); }
  55. [ \t\n]           { ECHO; }
  56. "phonix"          { ECHO; yylval.sval = s_strdup(yytext); return(PHONIX);}
  57. "soundex"         { ECHO; yylval.sval = s_strdup(yytext); return(SOUNDEX);}
  58. {WORD}            { char *s; 
  59.                     ECHO; yylval.sval = s_strdup(yytext); 
  60. #ifdef NOPAIRS
  61.                     for (s=yylval.sval;*s;*s=tolower(*s),s++);
  62. #endif /* NOPAIRS */
  63.                     return(WORD);}
  64. \'[^']*\'         { ECHO; yylval.sval = s_strdup(yytext); return(WORD);}
  65. \"[^"]*\"         { ECHO; yylval.sval = s_strdup(yytext); return(WORD);}
  66. %%
  67.